package com.solution.admin.product.dao;

import java.util.List;
import java.util.Map;

import com.solution.admin.product.entity.ProductCategoryEntity;
import com.solution.admin.product.entity.ProductCategorySortEntity;
import com.solution.common.dao.BaseDao;
import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;

/**
 * 商品类别信息DAO接口
 * @author xu_cc
 * @date 2017-08-31 23:52:27
 */
public interface ProductCategoryDao extends BaseDao<ProductCategoryEntity> {
    
    /**
     * 分类下商品数量统计
     * 
     * @param categoryId
     * @param type
     * @return int
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年9月26日 上午11:02:28
     */
    public int updateCount(Long categoryId, String type);
	
	/**
	 * 保存商品类别信息
	 * @param ebProductCategoryEntity
	 * @return
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	public long saveProductCategory(ProductCategoryEntity ebProductCategoryEntity);

	/**
	 * 分页查询商品类别信息信息
	 * @param pageParam 分页对象
	 * @param ebProductCategory 分页参数
	 * @return PageBean 分页参数及数据
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	public PageBean listProductCategoryPage(PageParam pageParam, Map<String, Object> param);

	/**
	 * 更新商品类别信息
	 * @param ebProductCategoryEntity
	 * @return
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	public int updateProductCategory(ProductCategoryEntity ebProductCategoryEntity);


	/**
	 * 删除商品类别信息角色
	 * @param id
	 * @return
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	public int deleteProductCategoryById(Long id);
	
	/**
	 * 根据商品类别信息类型获取商品类别信息
	 * @param param
	 * @return
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	public List<ProductCategoryEntity> listProductCategory( Map<String, Object> param);

	/**
	 * 根据关键字查询相关的商品类型
	 * @param param
	 * @return
	 * @author llp
	 */
	public List<ProductCategoryEntity> listProductCategoryBySearchKey(Map<String, Object> param);
	
	
	/**
	 * 查询PC端首页的商品类型
	 * @param param
	 * @return
	 * @author llp
	 */
	public List<ProductCategoryEntity> listProductCategoryForIndex(Map<String, Object> param);
	
	/**
	 * 商品分类排序
	 * 
	 * @param sortList
	 * @return int
	 * @author xu_cc
	 * @throws Exception
	 *             exception
	 * @Date 创建时间：2018年4月27日 下午6:37:43
	 */
	public int insertSortList(List<ProductCategorySortEntity> sortList);
	
	/**
	 * 根据分类ID集合获取所有的分类
	 * @param categoryIds
	 * @return
	 * @author xkl
	 * @date 2018年6月12日 下午6:43:14
	 */
	public Map<String, ProductCategoryEntity> listProductCategoryByIds(List<Long> categoryIds);

	/**
	 * 查询商品分类列表
	 * @param param
	 * @return
	 */
	public List<ProductCategoryEntity> listProductCategoryForSelector(Map<String, Object> param);
}
